This invention relates to software programs and, more particularly, to application programming interfaces.
Software development is a robust industry. Following the development of new hardware, software typically provides an interface to the hardware.
Before writing a software program, a developer may need to understand the functional requirements of the software, the hardware upon which the software may operate, and the operating environment. Particularly for complex software, a logical organization of the software may also be beneficial to reducing defects.
Some software programs are structured so that they work in a variety of operating environments. Additionally, software that is well-written anticipates new hardware to be supported by the software program. An application programming interface, or API, is a tool for structuring such software applications. As the name suggests, the API “interfaces” the core application code with the rest of an operating environment.
APIs generally include specifications or protocols for their use. Programs written according to the protocol may have a similar interface to the end-user, for example. APIs also may include routines, libraries, or other tools which minimize duplicity of effort for various developers who may perform similar functions. Thus, APIs are tools that typically permit new development to support new operating systems, to support new hardware, or to add new software features to existing application programs.
Software which supports a number of hardware components may benefit from such interfaces. Further, software which supports hardware from more than a single vendor, each with a distinct hardware requirement, may interface to an API to simplify code development. For projects where the hardware is available only after the software is written, an API may also promote developing the software within the project time constraints.
Thus, there is a continuing need for an interface between a plurality of hardware devices and a software program to support the hardware devices such that the software program is simplified while continuing to support the hardware.